#pragma once
#include <Dynamics/Integrator/symplectic_euler_cpu.h>

namespace PhysLeo
{

/**
 * explicit symplectic euler gpu module
 * v = v + a*dt
 * x = x + v*dt
 */    
template<typename T>
class SymplecticEulerCuda : public SymplecticEulerCpu<T> {
public:
    /**
    * empty constructor
    */
    SymplecticEulerCuda() = default;

    /**
    * virtual destructor
    */
    virtual ~SymplecticEulerCuda() = default;

    /**
    * advance simulation by timestep dt
    * @param[in] dt   timestep
    */
    void advanceTime(float dt) override;
};

}